﻿//#include <iostream>
//#include <queue>
//using namespace std;
//int main()
//{
//	priority_queue<int, vector<int>, greater<int>> pq;
//	pq.push(5);
//	pq.push(7);
//	pq.push(2);
//	pq.push(6);
//	pq.push(1);
//	pq.push(9);
//	pq.push(4);
//	pq.push(3);
//	pq.push(8);
//	while (!pq.empty())
//	{
//		cout << pq.top() << "  ";
//		pq.pop();
//	}
//	cout << endl;
//	return 0;
//}

//#include <deque>
//#include <iostream>
//namespace bit
//{
//	//封装容器类型Container，可以使用容器内的所有接口功能，这里我们不用管底层是如何实现的
//	//这里要注意的是，使用Container里容器接口功能时，容器中必须存在此接口功能
//	//这里也可以使用模板缺省值，跟函数缺省值一样，即函数参数传递的是对象，而模板传递的是类型
//	//模板实例化是在编译阶段的时候就对其实例化
//	template<class T = int, class Container = std::deque<T>>
//	class stack
//	{
//	public:
//		void push(const T x = T())
//		{
//			con.push_back(x);
//		}
//		void pop()
//		{
//			con.pop_front();
//		}
//		const T& front()
//		{
//			return con.front();
//		}
//		const T& back()
//		{
//			return con.back();
//		}
//		const size_t size()
//		{
//			return con.size();
//		}
//		bool empty()
//		{
//			return con.empty();
//		}
//	private:
//		Container con;
//	};
//}

//namespace bit
//{
//	template<class T, class Container>
//	class stack
//	{
//	public:
//		void push(const T x = T())
//		{
//			con.push_back(x);
//		}
//		void pop()
//		{
//			con.pop_back();
//		}
//		const T& top()
//		{
//			return con.back();
//		}
//		const size_t size()
//		{
//			return con.size();
//		}
//		bool empty()
//		{
//			return con.empty();
//		}
//	private:
//		Container con;
//	};
//}
//以下为样例测试
//#include <iostream>
//#include <vector>
//#include "stack.h"
//int main()
//{
//	bit::stack<int, std::vector<int>> s; //这里封装容器类型为vector<int>
//	s.push(1);
//	s.push(2);
//	s.push(4);
//	while (!s.empty()) {
//		std::cout << s.top() << " "; //依次输出4 2 1
//		s.pop();
//	}
//	std::cout << std::endl;
//	return 0;
//}